﻿//#define _CRT_SECURE_NO_WARNINGS
//BC100 有序序列合并
//题目
//题解(89)
//讨论(148)
//排行
//面经new
//简单  通过率：32.33 % 时间限制：1秒  空间限制：32M
//知识点
//C++工程师
//牛客
//warning 校招时部分企业笔试将禁止编程题跳出页面，为提前适应，练习时请使用在线自测，而非本地IDE。
//描述
//输入两个升序排列的序列，将两个序列合并为一个有序序列并输出。
//
//数据范围：
//1
//≤
//�
//,
//�
//≤
//1000
//
//1≤n, m≤1000  ， 序列中的值满足
//0
//≤
//�
//�
//�
//≤
//30000
//
//0≤val≤30000
//输入描述：
//输入包含三行，
//
//第一行包含两个正整数n, m，用空格分隔。n表示第二行第一个升序序列中数字的个数，m表示第三行第二个升序序列中数字的个数。
//
//第二行包含n个整数，用空格分隔。
//
//第三行包含m个整数，用空格分隔。
//输出描述：
//输出为一行，输出长度为n + m的升序序列，即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
//示例1
//输入：
//5 6
//1 3 7 9 22
//2 8 10 17 33 44
//复制
//输出：
//1 2 3 7 8 9 10 17 22 33 44
//
//
//#include <stdio.h>
//
//int main() {
//    int n, m;
//    scanf("%d %d", &n, &m);
//    int a[n];
//    int b[m];
//    int c[m + n];
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d", &a[i]);
//    }
//    for (int i = 0; i < m; i++)
//    {
//        scanf("%d", &b[i]);
//    }
//    int j = 0;
//    int k = 0;
//    int o = 0;
//    while (j < n && k < m)
//    {
//        if (a[j] <= b[k])
//        {
//            c[o++] = a[j++];
//        }
//        if (a[j] >= b[k])
//        {
//            c[o++] = b[k++];
//        }
//    }
//    while (j < n)
//    {
//        c[o++] = a[j++];
//    }
//
//    while (k < m)
//    {
//        c[o++] = b[k++];
//    }
//
//    for (int i = 0; i < m + n; i++)
//    {
//        printf("%d ", c[i]);
//    }
//    return 0;
//}

//BC96 有序序列判断
//题目
//题解(99)
//讨论(118)
//排行
//面经new
//简单  通过率：26.83 % 时间限制：1秒  空间限制：32M
//warning 校招时部分企业笔试将禁止编程题跳出页面，为提前适应，练习时请使用在线自测，而非本地IDE。
//描述
//输入一个整数序列，判断是否是有序序列，有序，指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
//
//数据范围：
//3
//≤
//�
//≤
//50
//
//3≤n≤50  序列中的值都满足
//1
//≤
//�
//�
//�
//≤
//100
//
//1≤val≤100
//输入描述：
//第一行输入一个整数N(3≤N≤50)。
//第二行输入N个整数，用空格分隔N个整数。
//输出描述：
//输出为一行，如果序列有序输出sorted，否则输出unsorted。
//示例1
//输入：
//5
//1 6 9 22 30
//复制
//输出：
//sorted
//复制
//示例2
//输入：
//5
//3 4 7 2 10
//复制
//输出：
//unsorted
//复制
//示例3
//输入：
//5
//1 1 1 1 1
//复制
//输出：
//sorted
//
//#include <stdio.h>
//
//int main() {
//    int n;
//    scanf("%d", &n);
//    int a[n];
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d", &a[i]);
//    }
//    int x = 1;//升序
//    int y = 1;//降序
//    for (int i = 0; i < n - 1; i++)
//    {
//        if (a[i] <= a[i + 1])
//        {
//            x++;
//        }
//        if (a[i] >= a[i + 1])
//        {
//            y++;
//        }
//    }
//    if (x == n || y == n)
//    {
//        printf("sorted");
//    }
//    else
//    {
//        printf("unsorted");
//    }
//    return 0;
//}

//BC54 获得月份天数
//题目
//题解(96)
//讨论(125)
//排行
//面经new
//简单  通过率：30.64 % 时间限制：1秒  空间限制：32M
//warning 校招时部分企业笔试将禁止编程题跳出页面，为提前适应，练习时请使用在线自测，而非本地IDE。
//描述
//KiKi想获得某年某月有多少天，请帮他编程实现。输入年份和月份，计算这一年这个月有多少天。
//输入描述：
//多组输入，一行有两个整数，分别表示年份和月份，用空格分隔。
//输出描述：
//针对每组输入，输出为一行，一个整数，表示这一年这个月有多少天。
//示例1
//输入：
//2008 2
//复制
//输出：
//29


////第一种解法：
//#include <stdio.h>
//void judge(int year, int month)
//{
//    int count = 0;//判断是否为闰年
//    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
//    {
//        //记录是闰年；
//        count = 1;
//    }
//    int out;
//    switch (month)
//    {
//    case 1:
//    case 3:
//    case 5:
//    case 7:
//    case 8:
//    case 10:
//    case 12:
//        out = 31;
//        break;
//    case 4:
//    case 6:
//    case 9:
//    case 11:
//        out = 30;
//        break;
//    case 2:
//        out = count == 1 ? 29 : 28;
//        break;
//
//    }
//    printf("%d\n", out);
//}
//int main() {
//    int year;
//    int month;
//    while (~scanf("%d%d", &year, &month))
//    {
//        judge(year, month);
//    }
//
//
//    return 0;
//}
//
////第二种解法 ：
//#include <stdio.h>
//int main()
//{
//    int y = 0;
//    int m = 0;
//    int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//    while (scanf("%d%d", &y, &m) != EOF)
//    {
//        int day = days[m - 1];
//        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
//        {
//            if (m == 2)
//                day += 1;
//        }
//        printf("%d\n", day);
//    }
//    return 0;
//}